IdeaBlade.EntityModel Assembly > IdeaBlade.EntityModel Namespace > EntityManager Class > InvokeServerMethodAsync Method : InvokeServerMethodAsync(String,String,CancellationToken,Object[]) Method |
static
(Shared
in Visual Basic) method for execution on the server.'Declaration
Public Overloads Function InvokeServerMethodAsync( _ ByVal assemblyQualifiedTypeName As String, _ ByVal methodName As String, _ ByVal cancellationToken As CancellationToken, _ ByVal ParamArray userArguments() As Object _ ) As Task(Of Object)
'Usage
Dim instance As EntityManager Dim assemblyQualifiedTypeName As String Dim methodName As String Dim cancellationToken As CancellationToken Dim userArguments() As Object Dim value As Task(Of Object) value = instance.InvokeServerMethodAsync(assemblyQualifiedTypeName, methodName, cancellationToken, userArguments)
public Task<object> InvokeServerMethodAsync( string assemblyQualifiedTypeName, string methodName, CancellationToken cancellationToken, params object[] userArguments )
Exception | Description |
---|---|
System.ArgumentException | Type name must be fully qualified |
System.ArgumentException | UserState token must be unique for the client |
System.Security.SecurityException | The exception that is thrown when a security error is detected. |
// Sample showing asynchronous invocation of server method // In client class: private void MakeAsyncCall() { EntityManager mgr = new DomainModelEntityManager(); // Make async call Guid myToken = Guid.NewGuid(); mgr.InvokeServerMethodAsync(new ServerMethodDelegate(Order.GetNumberOfOrdersSlow), InvokeServerMethodAsyncCompleted, myToken, new DateTime(1995, 1, 1), new DateTime(1999, 1, 1)); } private void InvokeServerMethodAsyncCompleted(InvokeServerMethodOperation e) { Guid token = (Guid)e.UserState; if (!e.Cancelled) { MessageBox.Show("my async result = " + Convert.ToInt32(e.Result).ToString()); } } // Sample method defined in Order entity class: public class Order { //... // ServerMethodDelegate method, called from client [AllowRpc] public static Object GetNumberOfOrdersSlow(IPrincipal pPrincipal, EntityManager pMgr, params Object[] pArgs) { // Sleep to make this slower to show async System.Threading.Thread.Sleep(2000); DateTime dt1 = pArgs[0] as DateTime; DateTime dt2 = pArgs[1] as DateTime; return pMgr.Order.Where(o => o.OrderDate >= dt1 && o.OrderDate <= dt2).Count(); } }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2